A otimização moderna é uma parceria entre escolha algorítmica de alto nível e consciência de baixo nível sobre a máquina. Embora Eficiência Assintótica defina limites teóricos, o Imperativo de Desempenho exige que enfrentemos fatores constantes que os compiladores não conseguem resolver sozinhos.
1. A Hierarquia da Otimização
O sucesso segue um processo linear: primeiro, elimine ineficiência assintótica (por exemplo, $O(N^2) \to O(N)$). Em seguida, aborde Bloqueadores de Otimização—principalmente Aliasing de Memória e sobrecarga de chamada de procedimento (como verificação constante de limites em get_vec_element).
2. Fluxo de Dados e Restrições
Os compiladores são conservadores por segurança; eles não otimizarão se um ponteiro *dest poderia se sobrepor ao vetor data. Medimos a velocidade no mundo real por meio de Ciclos por Elemento (CPE). O desempenho é frequentemente modelado por fatores de escala como $\alpha = 0.974$, onde o sobrecarregamento desloca a curva de execução (por exemplo, $209/\alpha = 39.0$).
3. Realidades de Hardware
A otimização exige compreender o Unidade de Retirada e o Caminho Crítico. Mesmo laços simples são limitados pela Limite de Throughput das unidades funcionais ou pelo Limite de Latência das cadeias de dependência.